import {Service} from "egg"
const COS = require('cos-nodejs-sdk-v5')
export default class UploadService extends Service{
public async upload(file:any,config:any,path){
    let ex = file.filename.substring(file.filename.lastIndexOf(".")+1)
    let targetName = new Date().getTime()+"."+ex
   let toPath = `${path}/${targetName}`
    const cos = new COS({
        SecretId: config.oss.SECRET_ID, // 推荐使用环境变量获取；用户的 SecretId，建议使用子账号密钥，授权遵循最小权限指引，降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
        SecretKey: config.oss.SECRET_KEY, // 推荐使用环境变量获取；用户的 SecretKey，建议使用子账号密钥，授权遵循最小权限指引，降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
    });
    return new Promise((resolve,reject)=>{
        cos.uploadFile({
            Bucket: config.oss.BUKET_NAME, // 填入您自己的存储桶，必须字段
            Region: config.oss.REGION,  // 存储桶所在地域，例如 ap-beijing，必须字段
            Key: toPath,  // 存储在桶里的对象键（例如1.jpg，a/b/test.txt），必须字段
            FilePath: file.filepath,                // 必须
            SliceSize: 1024 * 1024 * 5,     // 触发分块上传的阈值，超过5MB使用分块上传，非必须
            onTaskReady: function(taskId) {                   // 非必须
                console.log(taskId);
            },
            onProgress: function (progressData) {           // 非必须
                console.log(JSON.stringify(progressData));
            },
            // 支持自定义headers 非必须
            Headers: {
              'x-cos-meta-test': 123
            },
        }, function(err, data) {
            if (err) {
              console.log('上传失败', err);
              reject(err)
            } else {
                resolve(`https://${data.Location}`)
              console.log('上传成功', data);
            }
        });
    })
  
}


}